import request from '@/utils/request';
import qs from 'qs';
import { ResponseData } from '../typing';
// 参数接口
export interface UpdateOrderParamParams {
    // 主键 */
    id?: number;
    // 参数名 */
    name: string;
    // 参数key */
    key: string;
    // 参数值 */
    value?: string;
    // 管理后台 - 流程定义审批节点 */
    nodes?: {
        // 角色ID */
        id: Record<string, unknown>;
        // 角色名称 */
        name: string;
    }[];
    // 备注 */
    remark: string;
    // 分类状态，0禁用，1启用 */
    status: number;
}

/**
 * 更新参数配置
 * @param {object} params 管理后台 - 参数配置
 * @param {number} params.id 主键
 * @param {string} params.name 参数名
 * @param {string} params.key 参数key
 * @param {string} params.value 参数值
 * @param {array} params.nodes 管理后台 - 流程定义审批节点
 * @param {string} params.remark 备注
 * @param {number} params.status 分类状态，0禁用，1启用
 * @returns
 */
export function updateOrderParam(params: UpdateOrderParamParams): Promise<ResponseData<boolean>> {
    return request.put(`/yfwy/order-param/update`, params);
}
// 参数接口
export interface GetOrderParamPageParams {
    // 当前第几页(默认1) */
    current?: number;
    // 每页条数(默认20) */
    size?: number;
    // 参数名 */
    name?: string;
    page?: {
        records?: {
            createTime?: string;
            updateTime?: string;
            creator?: Record<string, unknown>;
            updater?: Record<string, unknown>;
            // 主键 */
            id?: Record<string, unknown>;
            // 参数名 */
            name?: string;
            // 参数名 */
            paramKey?: string;
            // 参数值 */
            value?: string;
            // 管理后台 - 流程定义审批节点 */
            nodes?: {
                // 角色ID */
                id: Record<string, unknown>;
                // 角色名称 */
                name: string;
            }[];
            // 备注 */
            remark?: string;
            // 分类状态，0禁用，1启用 */
            status?: Record<string, unknown>;
        }[];
        total?: Record<string, unknown>;
        size?: Record<string, unknown>;
        current?: Record<string, unknown>;
        orders?: {
            column?: string;
            asc?: boolean;
        }[];
        optimizeCountSql?: boolean;
        searchCount?: boolean;
        optimizeJoinOfCountSql?: boolean;
        maxLimit?: Record<string, unknown>;
        countId?: string;
        pages?: Record<string, unknown>;
    };
}
// 响应接口
export interface GetOrderParamPageRes {
    code: number;
    data: {
        size: number;
        total: number;
        records: {
            createTime: Record<string, unknown>;
            updateTime: Record<string, unknown>;
            creator: number;
            updater: number;
            // 主键 */
            id: number;
            // 参数名 */
            name: string;
            // 参数名 */
            paramKey: string;
            // 参数值 */
            value: string;
            // 审批角色（下拉多选参数时使用，如果有值会优先存当前值忽略value） */
            nodes: {
                // 角色ID */
                id: number;
                // 角色名称 */
                name: string;
            }[];
            // 备注 */
            remark: string;
            // 分类状态，0禁用，1启用 */
            status: number;
        }[];
        current: number;
        pages: number;
    };
    msg: string;
}
/**
 * 获得参数配置分页
 * @param {object} params 管理后台 - 参数配置分页 Request VO
 * @param {number} params.current 当前第几页(默认1)
 * @param {number} params.size 每页条数(默认20)
 * @param {string} params.name 参数名
 * @param {object} params.page
 * @returns
 */
export function getOrderParamPage(params: GetOrderParamPageParams): Promise<GetOrderParamPageRes> {
    return request.post(`/yfwy/order-param/page`, params);
}
// 参数接口
export interface ExportOrderParamExcelParams {
    // 当前第几页(默认1) */
    current?: number;
    // 每页条数(默认20) */
    size?: number;
    // 参数名 */
    name?: string;
    page?: {
        records?: {
            createTime?: string;
            updateTime?: string;
            creator?: Record<string, unknown>;
            updater?: Record<string, unknown>;
            // 主键 */
            id?: Record<string, unknown>;
            // 参数名 */
            name?: string;
            // 参数名 */
            paramKey?: string;
            // 参数值 */
            value?: string;
            // 管理后台 - 流程定义审批节点 */
            nodes?: {
                // 角色ID */
                id: Record<string, unknown>;
                // 角色名称 */
                name: string;
            }[];
            // 备注 */
            remark?: string;
            // 分类状态，0禁用，1启用 */
            status?: Record<string, unknown>;
        }[];
        total?: Record<string, unknown>;
        size?: Record<string, unknown>;
        current?: Record<string, unknown>;
        orders?: {
            column?: string;
            asc?: boolean;
        }[];
        optimizeCountSql?: boolean;
        searchCount?: boolean;
        optimizeJoinOfCountSql?: boolean;
        maxLimit?: Record<string, unknown>;
        countId?: string;
        pages?: Record<string, unknown>;
    };
}
// 响应接口
export interface ExportOrderParamExcelRes {}
/**
 * 导出参数配置 Excel
 * @param {object} params 管理后台 - 参数配置分页 Request VO
 * @param {number} params.current 当前第几页(默认1)
 * @param {number} params.size 每页条数(默认20)
 * @param {string} params.name 参数名
 * @param {object} params.page
 * @returns
 */
export function exportOrderParamExcel(params: ExportOrderParamExcelParams): Promise<Blob> {
    return request.post(`/yfwy/order-param/export-excel`, params, {
        responseType: 'blob',
    });
}
// 参数接口
export interface CreateOrderParamParams {
    // 主键 */
    id?: number;
    // 参数名 */
    name: string;
    // 参数key */
    key: string;
    // 参数值 */
    value?: string;
    // 管理后台 - 流程定义审批节点 */
    nodes?: {
        // 角色ID */
        id: Record<string, unknown>;
        // 角色名称 */
        name: string;
    }[];
    // 备注 */
    remark: string;
    // 分类状态，0禁用，1启用 */
    status: number;
}

/**
 * 创建参数配置
 * @param {object} params 管理后台 - 参数配置
 * @param {number} params.id 主键
 * @param {string} params.name 参数名
 * @param {string} params.key 参数key
 * @param {string} params.value 参数值
 * @param {array} params.nodes 管理后台 - 流程定义审批节点
 * @param {string} params.remark 备注
 * @param {number} params.status 分类状态，0禁用，1启用
 * @returns
 */
export function createOrderParam(params: CreateOrderParamParams): Promise<ResponseData<number>> {
    return request.post(`/yfwy/order-param/create`, params);
}
// 响应接口
export interface GetOrderParamRes {
    code: number;
    data: {
        createTime: Record<string, unknown>;
        updateTime: Record<string, unknown>;
        creator: number;
        updater: number;
        // 主键 */
        id: number;
        // 参数名 */
        name: string;
        // 参数名 */
        paramKey: string;
        // 参数值 */
        value: string;
        // 审批角色（下拉多选参数时使用，如果有值会优先存当前值忽略value） */
        nodes: {
            // 角色ID */
            id: number;
            // 角色名称 */
            name: string;
        }[];
        // 备注 */
        remark: string;
        // 分类状态，0禁用，1启用 */
        status: number;
    };
    msg: string;
}
/**
 * 获得参数配置
 * @param {string} id
 * @returns
 */
export function getOrderParam(id: number): Promise<GetOrderParamRes> {
    return request.get(`/yfwy/order-param/get/${id}`);
}
/**
 * 删除参数配置
 * @param {string} id
 * @returns
 */
export function deleteOrderParam(id: number): Promise<ResponseData<boolean>> {
    return request.delete(`/yfwy/order-param/delete/${id}`);
}
